24 research outputs found

    Ordonnancement de tâches indépendantes pour support d’exécution utilisant la localité des données

    Get PDF
    A now-classical way of meeting the increasing demand for computing speed by HPC applications is the use of GPUs and/or other accelerators. Such accelerators have their own memory, which is usually quite limited, and are connected to the main memory through a bus with bounded bandwidth. Thus, a particular care should be devoted to data locality in order to avoid unnecessary data movements. Task-based runtime schedulers have emerged as a convenient and efficient way to use such heterogeneous platforms. When processing an application, the scheduler has the knowledge of all tasks available for processing on a GPU, as well as their input data dependencies. Hence, it is able to order tasks and prefetch their input data in the GPU memory (after possibly evicting some previously-loaded data), while aiming at minimizing data movements, so as to reduce the total processing time. In this paper, we focus on how to schedule tasks that share some of their input data (but are otherwise independent) on a GPU. We provide a formal model of the problem, exhibit an optimal eviction strategy, and show that ordering tasks to minimize data movement is NP-complete. We review and adapt existing ordering strategies to this problem, and propose a new one based on task aggregation. These strategies have been implemented in the StarPU runtime system. We present their performance on tasks from tiled 2D, 3D matrix products, Cholesky factorization and randomized 2D matrix operation. Our experiments demonstrate that using our new strategy together with the optimal eviction policy reduces the amount of data movement as well as the total processing time.Une manière désormais classique de répondre à la demande croissante de puissance de calcul par les applications HPC est l'utilisation de GPU et autres accélérateurs. Ces accélérateurs ont leurs propre mémoire, qui est généralement assez limitée, et sont connectés à la mémoire principale via un bus dont la bande passante est bornée. Ainsi, une attention particulière doit être portée à la localité des données afin d'éviter des mouvements de données inutiles. Les ordonnanceurs des supports d'exécution à base de tâches sont un moyen pratique et efficace d'utiliser de telles plateformes hétérogènes. Lors du traitement d'une application, l'ordonnanceur a la connaissance de toutes les tâches disponibles, ainsi que leurs dépendances. Ainsi, il est capable d'ordonner les tâches et de pré-charger leurs données d'entrée dans la mémoire du GPU (après avoir éventuellement évincé certaines données précédemment chargées), tout minimisant les transferts de données, afin de réduire le temps d'exécution total. Dans ce papier, nous nous concentrons sur la façon de planifier des tâches qui partagent des données (mais sont par ailleurs indépendantes) sur un GPU. Nous fournissons un modèle formel du problème, nous présentons une stratégie d'éviction optimale et nous montrons qu'ordonner des tâches afin de minimiser les mouvement des données est un problème NP-complet. Nous adaptons des stratégies d'ordonnancement existantes à ce problème, et nous en proposons une nouvelle basé sur l'agrégation des tâches. Ces stratégies ont été implémentées sur le support d'exécution StarPU. Nous présentons leurs performances sur des produits matriciels 2D, 3D, la factorisation de Cholesky et un produit matriciel 2D randomisé. Nos expériences démontrent qu'en utilisant notre nouvelle stratégie, avec la politique d'éviction optimale, nous réduisons la quantité de transferts de données ainsi que le temps de traitement total

    Ordonnancement sous contrainte mémoire en domptant la localité des données dans un modèle de programmation à base de tâches

    Get PDF
    International audienceA now-classical way of meeting the increasing demand for computing speed by HPC applications is the use of GPUs and/or otheraccelerators. Such accelerators have their own memory, which is usually quite limited, and are connected to the main memorythrough a bus with bounded bandwidth. Thus, particular care should be devoted to data locality in order to avoid unnecessary datamovements. Task-based runtime schedulers have emerged as a convenient and efficient way to use such heterogeneous platforms.When processing an application, the scheduler has the knowledge of all tasks available for processing on a GPU, as well astheir input data dependencies. Hence, it is possible to produce a tasks processing order aiming at reducing the total processingtime through three objectives: minimizing data transfers, overlapping transfers and computation and optimizing the eviction ofpreviously-loaded data. In this paper, we focus on how to schedule tasks that share some of their input data (but are otherwiseindependent) on a single GPU. We provide a formal model of the problem, exhibit an optimal eviction strategy, and show thatordering tasks to minimize data movement is NP-complete. We review and adapt existing ordering strategies to this problem,and propose a new one based on task aggregation. We prove that the underlying problem of this new strategy is NP-complete,and prove the reasonable complexity of our proposed heuristic. These strategies have been implemented in the StarPU runtimesystem. We present their performance on tasks from tiled 2D, 3D matrix products, Cholesky factorization, randomized task order,randomized data pairs from the 2D matrix product as well as a sparse matrix product. We introduce a visual way to understandthese performance and lower bounds on the number of data loads for the 2D and 3D matrix products. Our experiments demonstratethat using our new strategy together with the optimal eviction policy reduces the amount of data movement as well as the totalprocessing time

    Ordonnancement sous contrainte mémoire dans un modèle de programmation à base de tâches

    No full text
    Hardware accelerators, such as GPUs, now provide a large part of the computational power used for scientific simulations.GPUs come with their own limited memory and are connected to the main memory of the machine via a bus with limited bandwidth. Scientific simulations often operate on very large data, to the point of not fitting in the limited GPU memory. In this case, one has to turn to out-of-core computing: data are kept in the CPU memory, and moved back and forth to theGPU memory when needed for the computation. This out-of-core situation also happens when processing on multi-coreCPUs with limited memory huge datasets stored on disk.In both cases, data movement quickly becomes a performance bottleneck.Task-based runtime schedulers have emerged as a convenient and efficient way to manage large applications on such heterogeneous platforms. They are in charge of choosing which tasks to assign on which processing unit and in which orderthey should be processed.During this thesis, we worked on the problem of scheduling for a task-based runtime to improve data locality in an out-ofcoresetting, in order to reduce data movements. We designed strategies for both task scheduling and data eviction fromlimited memories. We implemented them in the StarPU runtime and compared them to existing scheduling techniques inruntime systems. Our strategies achieves significantly better performance when scheduling tasks on multiple GPUs withlimited memory, as well as on multiple CPU cores with limited main memory.We also worked on batch scheduling of IO intensive workloads. Similarly, we used data locality techniques to reduce theaverage latency of a job.Les accélérateurs, tels que les GPU, fournissent désormais une grande partie de la puissance de calcul utilisée par les simulations scientifiques. Les GPUs disposent de leurs propre mémoire limitée et sont connectés à la mémoire principale de la machine via un bus de bande passante limitée. Les simulations scientifiques utilisent souvent une grande quantité de données, au point de ne pas pouvoir les charger dans la mémoire limité du GPU. Dans ce cas, il faut recourir à l’out-of-core :les données sont conservées dans la mémoire du CPU et sont déplacées vers la mémoire du GPU lorsque le calcul l'exige.Cette situation out-of-core se produit également sur des CPU multicoeurs avec mémoire limitée lors de calculs nécessitant de grande quantité de données stockées sur un disque. Dans les deux cas, les mouvements de données deviennent rapidement un goulot d'étranglement pour les performances.Les ordonnanceurs à base de tâches de supports d’exécution sont apparus comme un moyen pratique et efficace de gérer de grandes applications sur de telles plateformes hétérogènes. Ils sont chargés de choisir les tâches à assigner à chaque unité de calcul et l'ordre dans lequel elles doivent être traitées. Au cours de cette thèse, nous avons travaillé sur le problème d'ordonnancement pour les modèles de programmation à base de tâches afin d’améliorer la localité des données dans un environnement out-of-core, et de réduire les mouvements de données. Nous avons conçu des stratégies pour l'ordonnancement des tâches et l'éviction des données des mémoires limitées. Nous les avons implémentées dans le support d’exécution StarPU et les avons comparées aux techniques d'ordonnancement existantes dans les supports d’exécution. Nos stratégies permettent d'obtenir de bien meilleures performances lors de l'ordonnancement de tâches sur plusieurs GPU à mémoire limitée, ainsi que sur plusieurs coeurs de CPU à mémoire principale limitée. Nous avons également travaillé sur l'ordonnancement batch d’ensembles de travaux intense en Entrée/Sortie. De même,nous avons utilisé des techniques de localité des données afin de réduire la latence moyenne d'une tâche

    Exploiting data locality to maximize the performance of data-sharing tasksets

    No full text
    National audienceThe use of accelerators such as GPUs has become mainstream to achieve high performance on modern computing systems. GPUs come with their own (limited) memory and are connected to the main memory of the machine through a bus (with limited bandwidth). When a computation is started on a GPU, the corresponding data needs to be transferred to the GPU before the computation starts. Such data movements may become a bottleneck for performance, especially when several GPUs have to share the communication bus. Task-based runtime schedulers have emerged as a convenient and efficient way to use such heterogeneous platforms. With such systems, the scheduler has the ability to choose which task to allocate to which GPU and to reorder tasks so as to minimize data movements. We focus on this problem of partitioning and ordering tasks that share some of their input data. We present a novel dynamic strategy based on data selection, to efficiently allocate tasks to GPUs, and a custom eviction policy. We compare them to existing strategies using standard scheduling techniques in runtime systems. All strategies have been implemented on top of the StarPU runtime, and we show that our dynamic strategy achieves better performance when scheduling tasks on multiple GPUs with limited memory

    Ordonnancement sous contrainte mémoire dans un modèle de programmation à base de tâches

    No full text
    Les accélérateurs, tels que les GPU, fournissent désormais une grande partie de la puissance de calcul utilisée par les simulations scientifiques. Les GPUs disposent de leurs propre mémoire limitée et sont connectés à la mémoire principale de la machine via un bus de bande passante limitée. Les simulations scientifiques utilisent souvent une grande quantité de données, au point de ne pas pouvoir les charger dans la mémoire limité du GPU. Dans ce cas, il faut recourir à l’out-of-core :les données sont conservées dans la mémoire du CPU et sont déplacées vers la mémoire du GPU lorsque le calcul l'exige.Cette situation out-of-core se produit également sur des CPU multicoeurs avec mémoire limitée lors de calculs nécessitant de grande quantité de données stockées sur un disque. Dans les deux cas, les mouvements de données deviennent rapidement un goulot d'étranglement pour les performances.Les ordonnanceurs à base de tâches de supports d’exécution sont apparus comme un moyen pratique et efficace de gérer de grandes applications sur de telles plateformes hétérogènes. Ils sont chargés de choisir les tâches à assigner à chaque unité de calcul et l'ordre dans lequel elles doivent être traitées. Au cours de cette thèse, nous avons travaillé sur le problème d'ordonnancement pour les modèles de programmation à base de tâches afin d’améliorer la localité des données dans un environnement out-of-core, et de réduire les mouvements de données. Nous avons conçu des stratégies pour l'ordonnancement des tâches et l'éviction des données des mémoires limitées. Nous les avons implémentées dans le support d’exécution StarPU et les avons comparées aux techniques d'ordonnancement existantes dans les supports d’exécution. Nos stratégies permettent d'obtenir de bien meilleures performances lors de l'ordonnancement de tâches sur plusieurs GPU à mémoire limitée, ainsi que sur plusieurs coeurs de CPU à mémoire principale limitée. Nous avons également travaillé sur l'ordonnancement batch d’ensembles de travaux intense en Entrée/Sortie. De même,nous avons utilisé des techniques de localité des données afin de réduire la latence moyenne d'une tâche.Hardware accelerators, such as GPUs, now provide a large part of the computational power used for scientific simulations.GPUs come with their own limited memory and are connected to the main memory of the machine via a bus with limited bandwidth. Scientific simulations often operate on very large data, to the point of not fitting in the limited GPU memory. In this case, one has to turn to out-of-core computing: data are kept in the CPU memory, and moved back and forth to theGPU memory when needed for the computation. This out-of-core situation also happens when processing on multi-coreCPUs with limited memory huge datasets stored on disk.In both cases, data movement quickly becomes a performance bottleneck.Task-based runtime schedulers have emerged as a convenient and efficient way to manage large applications on such heterogeneous platforms. They are in charge of choosing which tasks to assign on which processing unit and in which orderthey should be processed.During this thesis, we worked on the problem of scheduling for a task-based runtime to improve data locality in an out-ofcoresetting, in order to reduce data movements. We designed strategies for both task scheduling and data eviction fromlimited memories. We implemented them in the StarPU runtime and compared them to existing scheduling techniques inruntime systems. Our strategies achieves significantly better performance when scheduling tasks on multiple GPUs withlimited memory, as well as on multiple CPU cores with limited main memory.We also worked on batch scheduling of IO intensive workloads. Similarly, we used data locality techniques to reduce theaverage latency of a job

    Exploiting data locality to maximize the performance of data-sharing tasksets

    No full text
    National audienceThe use of accelerators such as GPUs has become mainstream to achieve high performance on modern computing systems. GPUs come with their own (limited) memory and are connected to the main memory of the machine through a bus (with limited bandwidth). When a computation is started on a GPU, the corresponding data needs to be transferred to the GPU before the computation starts. Such data movements may become a bottleneck for performance, especially when several GPUs have to share the communication bus. Task-based runtime schedulers have emerged as a convenient and efficient way to use such heterogeneous platforms. With such systems, the scheduler has the ability to choose which task to allocate to which GPU and to reorder tasks so as to minimize data movements. We focus on this problem of partitioning and ordering tasks that share some of their input data. We present a novel dynamic strategy based on data selection, to efficiently allocate tasks to GPUs, and a custom eviction policy. We compare them to existing strategies using standard scheduling techniques in runtime systems. All strategies have been implemented on top of the StarPU runtime, and we show that our dynamic strategy achieves better performance when scheduling tasks on multiple GPUs with limited memory

    Ordonnancement sous contrainte mémoire dans un modèle de programmation à base de tâches

    No full text
    Hardware accelerators, such as GPUs, now provide a large part of the computational power used for scientific simulations.GPUs come with their own limited memory and are connected to the main memory of the machine via a bus with limited bandwidth. Scientific simulations often operate on very large data, to the point of not fitting in the limited GPU memory. In this case, one has to turn to out-of-core computing: data are kept in the CPU memory, and moved back and forth to theGPU memory when needed for the computation. This out-of-core situation also happens when processing on multi-coreCPUs with limited memory huge datasets stored on disk.In both cases, data movement quickly becomes a performance bottleneck.Task-based runtime schedulers have emerged as a convenient and efficient way to manage large applications on such heterogeneous platforms. They are in charge of choosing which tasks to assign on which processing unit and in which orderthey should be processed.During this thesis, we worked on the problem of scheduling for a task-based runtime to improve data locality in an out-ofcoresetting, in order to reduce data movements. We designed strategies for both task scheduling and data eviction fromlimited memories. We implemented them in the StarPU runtime and compared them to existing scheduling techniques inruntime systems. Our strategies achieves significantly better performance when scheduling tasks on multiple GPUs withlimited memory, as well as on multiple CPU cores with limited main memory.We also worked on batch scheduling of IO intensive workloads. Similarly, we used data locality techniques to reduce theaverage latency of a job.Les accélérateurs, tels que les GPU, fournissent désormais une grande partie de la puissance de calcul utilisée par les simulations scientifiques. Les GPUs disposent de leurs propre mémoire limitée et sont connectés à la mémoire principale de la machine via un bus de bande passante limitée. Les simulations scientifiques utilisent souvent une grande quantité de données, au point de ne pas pouvoir les charger dans la mémoire limité du GPU. Dans ce cas, il faut recourir à l’out-of-core :les données sont conservées dans la mémoire du CPU et sont déplacées vers la mémoire du GPU lorsque le calcul l'exige.Cette situation out-of-core se produit également sur des CPU multicoeurs avec mémoire limitée lors de calculs nécessitant de grande quantité de données stockées sur un disque. Dans les deux cas, les mouvements de données deviennent rapidement un goulot d'étranglement pour les performances.Les ordonnanceurs à base de tâches de supports d’exécution sont apparus comme un moyen pratique et efficace de gérer de grandes applications sur de telles plateformes hétérogènes. Ils sont chargés de choisir les tâches à assigner à chaque unité de calcul et l'ordre dans lequel elles doivent être traitées. Au cours de cette thèse, nous avons travaillé sur le problème d'ordonnancement pour les modèles de programmation à base de tâches afin d’améliorer la localité des données dans un environnement out-of-core, et de réduire les mouvements de données. Nous avons conçu des stratégies pour l'ordonnancement des tâches et l'éviction des données des mémoires limitées. Nous les avons implémentées dans le support d’exécution StarPU et les avons comparées aux techniques d'ordonnancement existantes dans les supports d’exécution. Nos stratégies permettent d'obtenir de bien meilleures performances lors de l'ordonnancement de tâches sur plusieurs GPU à mémoire limitée, ainsi que sur plusieurs coeurs de CPU à mémoire principale limitée. Nous avons également travaillé sur l'ordonnancement batch d’ensembles de travaux intense en Entrée/Sortie. De même,nous avons utilisé des techniques de localité des données afin de réduire la latence moyenne d'une tâche

    Ordonnancement sous contrainte mémoire dans un modèle de programmation à base de tâches

    No full text
    Hardware accelerators, such as GPUs, now provide a large part of the computational power used for scientific simulations.GPUs come with their own limited memory and are connected to the main memory of the machine via a bus with limited bandwidth. Scientific simulations often operate on very large data, to the point of not fitting in the limited GPU memory. In this case, one has to turn to out-of-core computing: data are kept in the CPU memory, and moved back and forth to theGPU memory when needed for the computation. This out-of-core situation also happens when processing on multi-coreCPUs with limited memory huge datasets stored on disk.In both cases, data movement quickly becomes a performance bottleneck.Task-based runtime schedulers have emerged as a convenient and efficient way to manage large applications on such heterogeneous platforms. They are in charge of choosing which tasks to assign on which processing unit and in which orderthey should be processed.During this thesis, we worked on the problem of scheduling for a task-based runtime to improve data locality in an out-ofcoresetting, in order to reduce data movements. We designed strategies for both task scheduling and data eviction fromlimited memories. We implemented them in the StarPU runtime and compared them to existing scheduling techniques inruntime systems. Our strategies achieves significantly better performance when scheduling tasks on multiple GPUs withlimited memory, as well as on multiple CPU cores with limited main memory.We also worked on batch scheduling of IO intensive workloads. Similarly, we used data locality techniques to reduce theaverage latency of a job.Les accélérateurs, tels que les GPU, fournissent désormais une grande partie de la puissance de calcul utilisée par les simulations scientifiques. Les GPUs disposent de leurs propre mémoire limitée et sont connectés à la mémoire principale de la machine via un bus de bande passante limitée. Les simulations scientifiques utilisent souvent une grande quantité de données, au point de ne pas pouvoir les charger dans la mémoire limité du GPU. Dans ce cas, il faut recourir à l’out-of-core :les données sont conservées dans la mémoire du CPU et sont déplacées vers la mémoire du GPU lorsque le calcul l'exige.Cette situation out-of-core se produit également sur des CPU multicoeurs avec mémoire limitée lors de calculs nécessitant de grande quantité de données stockées sur un disque. Dans les deux cas, les mouvements de données deviennent rapidement un goulot d'étranglement pour les performances.Les ordonnanceurs à base de tâches de supports d’exécution sont apparus comme un moyen pratique et efficace de gérer de grandes applications sur de telles plateformes hétérogènes. Ils sont chargés de choisir les tâches à assigner à chaque unité de calcul et l'ordre dans lequel elles doivent être traitées. Au cours de cette thèse, nous avons travaillé sur le problème d'ordonnancement pour les modèles de programmation à base de tâches afin d’améliorer la localité des données dans un environnement out-of-core, et de réduire les mouvements de données. Nous avons conçu des stratégies pour l'ordonnancement des tâches et l'éviction des données des mémoires limitées. Nous les avons implémentées dans le support d’exécution StarPU et les avons comparées aux techniques d'ordonnancement existantes dans les supports d’exécution. Nos stratégies permettent d'obtenir de bien meilleures performances lors de l'ordonnancement de tâches sur plusieurs GPU à mémoire limitée, ainsi que sur plusieurs coeurs de CPU à mémoire principale limitée. Nous avons également travaillé sur l'ordonnancement batch d’ensembles de travaux intense en Entrée/Sortie. De même,nous avons utilisé des techniques de localité des données afin de réduire la latence moyenne d'une tâche
    corecore